home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / cpphtp2 / code.jar / code / ch15 / fig15_12.txt < prev    next >
Text File  |  1998-02-27  |  2KB  |  63 lines

  1. 1   // Fig. 15.12: queue.h
  2. 2   // Queue class template definition
  3. 3   // Derived from class List
  4. 4   #ifndef QUEUE_H
  5. 5   #define QUEUE_H
  6. 6   
  7. 7   #include "list.h"
  8. 8   
  9. 9   template< class QUEUETYPE >
  10. 10  class Queue: private List< QUEUETYPE > {
  11. 11  public:
  12. 12     void enqueue( const QUEUETYPE &d ) { insertAtBack( d ); }
  13. 13     bool dequeue( QUEUETYPE &d ) 
  14. 14        { return removeFromFront( d ); }
  15. 15     bool isQueueEmpty() const { return isEmpty(); }
  16. 16     void printQueue() const { print(); }
  17. 17  };
  18. 18  
  19. 19  #endif
  20. 20  
  21. 21  
  22. 22  // Fig. 15.12: fig15_12.cpp
  23. 23  // Driver to test the template Queue class
  24. 24  #include <iostream.h>
  25. 25  #include "queue.h"
  26. 26  
  27. 27  int main()
  28. 28  {
  29. 29     Queue< int > intQueue;
  30. 30     int dequeueInteger;
  31. 31     cout << "processing an integer Queue" << endl;
  32. 32  
  33. 33     for ( int i = 0; i < 4; i++ ) {
  34. 34        intQueue.enqueue( i );
  35. 35        intQueue.printQueue();
  36. 36     }
  37. 37  
  38. 38     while ( !intQueue.isQueueEmpty() ) {
  39. 39        intQueue.dequeue( dequeueInteger );
  40. 40        cout << dequeueInteger << " dequeued" << endl;
  41. 41        intQueue.printQueue();
  42. 42     }
  43. 43  
  44. 44     Queue< double > doubleQueue;
  45. 45     double val = 1.1, dequeuedouble;
  46. 46  
  47. 47     cout << "processing a double Queue" << endl;
  48. 48  
  49. 49     for ( i = 0; i < 4; i++ ) {
  50. 50        doubleQueue.enqueue( val );
  51. 51        doubleQueue.printQueue();
  52. 52        val += 1.1;
  53. 53     }
  54. 54  
  55. 55     while ( !doubleQueue.isQueueEmpty() ) {
  56. 56        doubleQueue.dequeue( dequeuedouble );
  57. 57        cout << dequeuedouble << " dequeued" << endl;
  58. 58        doubleQueue.printQueue();
  59. 59     }
  60. 60  
  61. 61     return 0;
  62. 62  }
  63.